<?php

namespace App\Http\Controllers\RBAC;

use App\Http\Controllers\admin\AdminPlatformController;
use App\Http\Model\Per;
use App\Http\Model\Permission;
use App\Http\Model\Permission_group;
use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Input;

/**
 * Class PerController RBAC后台权限控制器
 * @package App\Http\Controllers\RBAC
 */
class PerController extends AdminPlatformController
{
    /**
     * 添加权限
     */
    public function per_add(){
        if(!$input = Input::except('_token')){
            /** 获取所有权限分组信息 */
            $per_group_list = Permission_group::orderBy('sort_order','desc')
                ->get();
            return view('admin.rbac.permission.perAdd',compact('per_group_list'));
        }
        /** 处理表单数据 */
        /** 字段验证 */
        if(Per::insert($input)){
            /** 跳转到管理员权限列表 */
            return redirect('manager/rbac/per/per_list');
        }
        /** 错误跳转 */
        return back()->with('errors','权限添加失败!');
    }

    /**
     * 删除权限
     */
    public function per_del($per_id){
        if(Per::where($per_id)->delete()){
            /** 跳转到管理员权限列表 */
            return rediect('manager/rbac/per/per_list');
        }
        /** 错误跳转 */
        return back()->with('errors','权限删除失败!');
    }

    /**
     * 修改权限
     */
    public function per_edit($per_id){
        if(!$input = Input::except('_token')){
            /** 获取所有权限分组信息 */
            $per_group_list = Permission_group::all();
            /** 获取权限信息 */
            $per_info = Per::find($per_id);
            return view('admin.rbac.permission.perEdit',compact('per_info','per_group_list'));
        }
            /** 执行编辑权限 */
            if(!Permission::where('per_id',$per_id)->update($input)){
               die('编辑权限失败!');
            }
            return redirect('manager/rbac/per/per_list');
    }

    /**
     * 权限列表
     */
    public function per_list(){
        /** 获取所有权限 */
        $per_list = Per::
            orderBy('permission.sort_order')
            -> select('permission.*','permission_group.pname')
            -> leftJoin('permission_group','permission.cat_id','=','permission_group.pid')
            -> get();
        return view('admin.rbac.permission.perList',compact('per_list'));
    }
}
